﻿#define  _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//print(char* s)
//{
//	if (*s)
//	{
//		print(++s);
//		printf("%c", *s);
//	}
//}
//int main()
//{
//char str[] = "Geneius";
//print(str);
//return 0;
//}
//图片整理
#include<stdio.h>
//#include<string.h>
//char bubble_sort(char str[], int len)
//{
//    int i = 0;
//    for (i = 0; i < len - 1; i++)
//    {
//        int j = 0;
//        for (j = 0; j < len - 1 - i; j++)
//        {
//            if (str[j] > str[j + 1])
//            {
//                char temp = str[j];
//                str[j] = str[j + 1];
//                str[j + 1] = temp;
//            }
//        }
//    }
//}
//int main()
//{
//    char str[1000];
//    scanf("%s", &str);
//    int len = strlen(str);
//    bubble_sort(str, len);
//    int i = 0;
//    for (i = 0; i < len; i++)
//    {
//        printf("%c", str[i]);
//    }
//    return 0;
//}
//寻找数组的中心下标
//int pivotIndex(int* nums, int numsSize)
//{
//    int i = 0;
//    for (i = 0; i < numsSize; i++)//假如中心下标从0开始依次遍历
//    {
//        int j = 0;
//        int leftsum = 0;
//        int rightsum = 0;
//        for (j = 0; j < numsSize; j++)
//        {
//            if (j < i)//左边数之和
//            {
//                leftsum += nums[j];
//            }
//            else if (j > i)//右边数之和
//            {
//                rightsum += nums[j];
//            }
//        }
//        if (leftsum == rightsum)
//        {
//            return i;
//        }
//    }
//    return -1;
//}


//字符个数统计
//#include <stdio.h>
//int main()
//{
//	char tmp[501] = { 0 };
//	while (~scanf("%s", tmp))//多组输入
//	{   //标记数组
//		char table[128] = { 0 },*ptr = tmp;
//		int count = 0;
//		while (*ptr != '\0')
//		{
//			if (table[*ptr] != 1)//判断字符ascii值作为下标的位置是否被标记过，是否是重复字符
//			{
//				count++; //当前字符的位置没有被标记过表示没有出现过，则计数+1
//			} 
//			table[*ptr] = 1;//将字符ascii值作为下标的位置进行标记置1
//			ptr++;
//		} 
//		printf("%d\n", count);
//	} 
//	return 0;
//}


//给定一个大小为 n 的数组 nums ，返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n / 2 ⌋ 的元素
//你可以假设数组是非空的，并且给定的数组总是存在多数元素。
//来源：力扣（LeetCode）
//链接：https ://leetcode.cn/problems/majority-element
#include<stdio.h>
#include<string.h>
int majorityElement(int* nums, int numsSize)
{
	int count = 1;
	int tmp = nums[0];
	for (int i = 1; i < numsSize; i++)
	{
		if (tmp == nums[i])
		{
			count++;  //与保存的字符相同则计数+1
		}
		else
		{
			count--;  //与保存的字符不同则计数-1

			if (count == 0)
			{
				tmp = nums[i + 1];  //计数为0表示有可能保存的字符不是最多的字符，换下一个
			}
		}
	}
	return tmp;
}
int main()
{
	int nums[] = { 2,3,3,3,5 };
	int numsSize = sizeof(nums) / sizeof(nums[0]);
	int ret=majorityElement(nums, numsSize);
	printf("%d", ret);
	return 0;
}